package socket

import (
	"fmt"
	"net"
)

func ProcessUDP(conn *net.UDPConn) {
	var data [1024]byte
	n, addr, err := conn.ReadFromUDP(data[:])
	if err != nil {
		fmt.Println("err=" + err.Error())
		return
	}
	if n == 0 {
		fmt.Println("not receive")
	}

	msg := string(data[:n])
	fmt.Println(msg, *addr)

	msg = "from server:" + msg
	conn.WriteToUDP([]byte(msg), addr)
}

func UDPServer() {
	conn, err := net.ListenUDP("udp", &net.UDPAddr{
		IP:   net.ParseIP("0.0.0.0"),
		Port: 9001,
	})

	if err != nil {
		fmt.Println("start failed, err=" + err.Error())
		return
	}

	fmt.Println("udp server started")

	defer conn.Close()

	for {
		ProcessUDP(conn)
	}
}
